﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebDauGia.Domain.Abstract;
using WebDauGia.Domain.Models;
using WebDauGia.Models;
using WebDauGia._Library;
using System.Web.Security;
using System.Data;
using System.Data.Entity;

namespace WebDauGia.Controllers
{
    public class TaiKhoanController : Controller
    {
        //
        // GET: /TaiKhoan/
        public WebDauGiaDBContext db = new WebDauGiaDBContext();
        //private WebRepository repository;
        public ActionResult TaoTaiKhoan()
        {
            return View();
        }
        [HttpPost]
        public ActionResult TaoTaiKhoan(TaiKhoanModel tk) {
            if (ModelState.IsValid) {
                var username = db.KhachHangs.Where(c => c.username == tk.UserName).ToList();
                if (username.Count > 0)
                {
                    ViewBag.Message = "Tên đăng nhập đã tồn tại";
                }
                else {
                    KhachHang user = new KhachHang();
                    user.username = tk.UserName;
                    user.paswword = TextLibrary.GetSHA1HashData(tk.Password);//tk.Password;
                    user.diachi = tk.diachi;
                    user.active = false;
                    user.email = tk.email;
                    user.hoten = tk.hoten;
                    user.idquyen = 1;
                    user.ngaysinh = tk.ngaysinh;
                    user.sodt = tk.sodt;
                    db.KhachHangs.Add(user);
                    db.SaveChanges();
                    TempData["message"] = string.Format("Tài khoản {0} đã đăng ký thành công", tk.UserName);
                    return RedirectToAction("List", "SanPham");
                }
            }
            return View(tk);
        }
        #region Xu ly Dang Nhap
        public Boolean XuLyDangNhap(String username, String raw_password)
        {
            if (username == null || raw_password == null)
                //băm mật khẩu nhập vào
                return false;
            String h_password = TextLibrary.GetSHA1HashData(raw_password);
            //lấy password từ db
            var db_pass = (from u in db.KhachHangs
                           where u.username == username
                           && u.active == true
                           select u.paswword).FirstOrDefault();
            //kiểm tra lỗi 
            if (db_pass == null)
                return false;
            //xác nhận mật khẩu và return
            return h_password.Equals(db_pass.ToString()) ? true : false;
        }
        #endregion
        public ActionResult DangNhap(string returnUrl) {
            ViewBag.ReturnUrl = returnUrl;
            return View();
        }
        [HttpPost]
        public ActionResult DangNhap(DangNhapModel obj) {
            if (ModelState.IsValid)
            {
                string username = obj.UserName;
                string password = obj.Password;
                if (XuLyDangNhap(username, password))
                {
                    Session["Account"] = obj.UserName;
                    return RedirectToAction("List", "SanPham");
                }
                else
                {
                    ViewBag.Error = "<script language=javascript>alert('Tên đăng nhập hoặc mật khẩu không đúng');</script>";
                }
                
            }
            
                return View(obj);
            
        }
        public ActionResult DangXuat() {
            Session["Account"] = null;
            Session.Clear();
            FormsAuthentication.SignOut();
            return RedirectToAction("List", "SanPham");
        }

        public ActionResult Account() {
            if (Session["Account"] != null)
            {
                return View();
            }
            else {
                return RedirectToAction("List", "SanPham");
            }
        }
        
        public ActionResult DoiMatKhau() {
            if (Session["Account"] != null)
            {
                return View();
            }
            else
            {
                return RedirectToAction("List", "SanPham");
            }
        }
        [HttpPost]
        public ActionResult DoiMatKhau(DoiMatKhauModel obj)
        {
            if (Session["Account"] != null)
            {
                if (ModelState.IsValid)
                {
                    string username = Session["Account"].ToString();
                    
                    var hash_oldpass = (from u in db.KhachHangs
                                   where u.username == username
                                   && u.active == true
                                   select u.paswword).FirstOrDefault();
                    if (hash_oldpass.ToString() == TextLibrary.GetSHA1HashData(obj.OldPassword).ToString())
                    {
                        var uid = (from u in db.KhachHangs
                                       where u.username == username
                                            && u.active == true
                                        select u.id).FirstOrDefault();
                        KhachHang user = db.KhachHangs.Find(uid);//new KhachHang();
                        user.paswword = TextLibrary.GetSHA1HashData(obj.Password);
                        db.SaveChanges();
                        TempData["message"] = string.Format("Thay đổi mật khẩu thành công");
                        return RedirectToAction("List", "SanPham");
                    }
                    else
                    {
                        ViewBag.Error = "<script language=javascript>alert('Mật khẩu cũ nhập không đúng');</script>";
                    }

                }
                return View(obj);
            }
            return RedirectToAction("List", "SanPham"); 
        }
        public ActionResult ThayDoiThongTin(string username) {
            if (Session["Account"] != null)
            {
                ThayDoiThongTinModel obj = new ThayDoiThongTinModel();
                var kh = db.KhachHangs.Single(u => u.username == username);
                obj.diachi = kh.diachi;
                obj.email = kh.email;
                obj.hoten = kh.hoten;
                obj.ngaysinh = (DateTime)kh.ngaysinh;
                obj.sodt = kh.sodt;
                return View(obj);
            }
            else
            {
                return RedirectToAction("List", "SanPham");
            }
        }
        [HttpPost]
        public ActionResult ThayDoiThongTin(ThayDoiThongTinModel obj)
        {
            if (Session["Account"] != null)
            {
                if (ModelState.IsValid)
                {
                    string username = Session["Account"].ToString();
                    var account = db.KhachHangs.Single(u => u.username == username);
                    account.diachi = obj.diachi;
                    account.hoten = obj.hoten;
                    account.ngaysinh = obj.ngaysinh;
                    account.sodt = obj.sodt;
                    db.Entry(account).State = EntityState.Modified;
                    db.SaveChanges();
                        TempData["message"] = string.Format("Thay đổi thông tin thành công");
                        return RedirectToAction("List", "SanPham");


                }
                return View(obj);
            }
            return RedirectToAction("List", "SanPham"); 
        }
    }
}
